package es.uma.scgt.controlador;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import es.uma.scgt.dao.EquipoDao;
import es.uma.scgt.modelo.Equipo;

@Controller
public class EquipoControlador {
	
private static final String PAGINA_CRUD_EQUIPO = "CrudEquipo";
private static final String PARAM_EQUIPO_LIST = "equipoList";
@Autowired
private EquipoDao equipoDao;

@RequestMapping("/CrudEquipo")
@Transactional
public String iniCrudEquipo(ModelMap model){
	model.addAttribute("equipoList", equipoDao.getTodosEquipo());
	return PAGINA_CRUD_EQUIPO;
	
}

@RequestMapping("/GuardarEquipo")
@Transactional
public String GuardarEquipo(ModelMap model, @RequestParam("equipoId") Integer equipoId, @RequestParam("nombre") String nombre, @RequestParam("email") String email, @RequestParam("descripcion") String descripcion){
	if(equipoId == null){
		//Equipo Nuevo
		Equipo equipo = new Equipo();
		rellenarEquipo(equipoId, nombre, email, descripcion,equipo, 1);
		equipoDao.crearEditarEquipo(equipo);
	}else{
		Equipo tmpEquipo = equipoDao.getEquipoPorId(equipoId);
		rellenarEquipo(equipoId,nombre,email,descripcion,tmpEquipo, tmpEquipo.getActive());
		equipoDao.crearEditarEquipo(tmpEquipo);
		
	}
	//model.addAttribute(PARAM_EQUIPO_LIST,equipoDao.getTodosEquipo());
	
	return "redirect:/CrudEquipo.html";
}

private void rellenarEquipo(Integer equipoId, String nombre, String email, String descripcion, Equipo equipo, int active) {
	// TODO Auto-generated method stub
	equipo.setId(equipoId);
	equipo.setNombre(nombre);
	equipo.setEmail(email);
	equipo.setDescripcion(descripcion);
	equipo.setActive(active);
	
}

@RequestMapping("/EliminarEquipo")
@Transactional
public @ResponseBody String EliminarEquipo( @RequestParam("equipoId") Integer equipoId){
	try{
		if (equipoDao.hayUsuarioYN(equipoId)==false){
			equipoDao.borrarEquipo(equipoId);
		}else{
			// Hay usuario activos
			return "Imposible borrar el equipo porque todavia hay usuario activos";
		}
	}catch(Exception e){
		return "Error: Captura de excepcion en EquipoControlador.eliminarEquipo";
	}
	
	
	//model.addAttribute(PARAM_EQUIPO_LIST, equipoDao.getTodosEquipo());
	
	return "OK";
}

}
